package cn.zqy.demo2.day04.demo02;

import java.util.HashMap;
import java.util.Hashtable;

/**
 *     java.util.Hashtable<K,V>集合 implements Map<K,V>接口
 *
 *     Hashtable:底层也是一个哈希表,是一个【线程安全的集合,是单线程集合】,速度慢
 *     HashMap:底层是一个哈希表,是一个【线程不安全的集合,是多线程的集合】,速度快
 *
 *     HashMap集合(之前学的所有的集合):可以存储null值,null键
 *     Hashtable集合,不能存储null值,null键
 *
 *     Hashtable和Vector集合一样,在jdk1.2版本之后被更先进的集合(HashMap,ArrayList)取代了
 *     Hashtable的子类Properties依然活跃在历史舞台
 *     Properties集合是一个唯一和IO流相结合的集合
 *
 *     */
public class Demo03HashTable {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("a", null);
        map.put(null, "b");
        map.put(null, null);
        System.out.println(map);  // {null=null, a=null}可以存储null值,null键
        System.out.println("=============");

        Hashtable<String, String> mmp = new Hashtable<>();
        // 以下均报java.lang.NullPointerException，空指针异常
//        mmp.put("a", null);
//        mmp.put(null, "b");
//        mmp.put(null, null);
        System.out.println(mmp);
    }
}
